#ifndef SRC_BASE_NULLSOCKETSERVER_H_
#define SRC_BASE_NULLSOCKETSERVER_H_

#include "base/event.h"
#include "base/physicalsocketserver.h"

namespace vz {

// NullSocketServer

class NullSocketServer : public vz::SocketServer {
 public:
  NullSocketServer() : event_(false, false) {}

  virtual bool Wait(int cms, bool process_io) {
    event_.Wait(cms);
    return true;
  }

  virtual void WakeUp() {
    event_.Set();
  }

  virtual vz::Socket* CreateSocket(int type) {
    ASSERT(false);
    return NULL;
  }

  virtual vz::Socket* CreateSocket(int family, int type) {
    ASSERT(false);
    return NULL;
  }

  virtual vz::AsyncSocket* CreateAsyncSocket(int type) {
    ASSERT(false);
    return NULL;
  }

  virtual vz::AsyncSocket* CreateAsyncSocket(int family, int type) {
    ASSERT(false);
    return NULL;
  }


 private:
  vz::Event event_;
};

}  // namespace vz

#endif  // SRC_BASE_NULLSOCKETSERVER_H_
